The present invention relates generally to user interfaces and, more particularly, to user interfaces that support the launching of multiple application programs and tasks shared by users of a computer network.
Administrative consoles are being developed to provide a common graphical user interface (GUI) within which users can configure and manage multiple, heterogeneous applications and network resources shared by members of a computer network. Applications and other resources managed via administrative consoles are typically referred to collectively as xe2x80x9cproducts.xe2x80x9d An exemplary administrative console for managing multiple heterogeneous products is the Microsoft Management Console illustrated in FIG. 1.
Conventionally, each product in an administrative console supplies the resources needed by the respective product. For example, each product in a conventional console may contain the following string values in its own product resource file(s): xe2x80x9cOkxe2x80x9d, xe2x80x9cCancelxe2x80x9d, xe2x80x9cNextxe2x80x9d, xe2x80x9cPreviousxe2x80x9d, xe2x80x9cHelpxe2x80x9d, xe2x80x9cMondayxe2x80x9d, xe2x80x9cTuesdayxe2x80x9d, and xe2x80x9cJanuaryxe2x80x9d. These string values may allow a product to perform specific tasks. Each product in a console conventionally retrieves resources from the respective product""s own resource file(s). As such, a product conventionally defines resources that are also defined in other products. For example, the task performed when a user activates an xe2x80x9cOkxe2x80x9d button displayed within a GUI is typically defined by each product, even though the task may be identical.
It would be highly desirable to reduce duplication of product resources by allowing multiple products within a console to share resources, especially resources that facilitate performance of identical tasks. Unfortunately, tasks of administered products within a console may be xe2x80x9cheterogeneousxe2x80x9d in that they may be written in different programming languages, may require different runtime support libraries, and may use and manage resources differently. For example, one product within a console may include tasks written in the C++ programming language and may require the C++ runtime library to run within the console. Another product within the same console may have tasks written in Visual Basic and require the Visual Basic runtime library for operation. As such, it may be difficult to share resources between these product""s tasks.
The present invention is directed to systems, methods and computer program products for defining and sharing resources within an Extensible Markup Language (XML) document that defines a console (i.e., a graphical user interface or GUI) for managing a plurality of application programs and tasks associated therewith, and that is task and language independent. An XML document according to an embodiment of the present invention includes a root scoping level and a hierarchical plurality of scoping levels descending from the root scoping level that define application programs and tasks associated therewith. A resource container may be located at the root scoping level and at each scoping level descending from the root scoping level. Each respective resource container contains a definition for at least one respective resource that is utilized by one or more application programs and/or tasks associated with an application program.
Upon receiving a user request to perform a task associated with an application program managed by a console, a search is conducted within containers at each scoping level for one or more resources required to perform the task. The search is initiated at the scoping level where the task to be performed is defined and proceeds in ascending order towards the root scoping level until the resource is located. When found, a clone of each located resource is generated. The task is then performed using the clone of the resource. The clone of the resource may be discarded after the task has been performed. The xe2x80x9coriginalxe2x80x9d of the resource is not modified.
According to other embodiments of the present invention, a cloned resource may be modified such that performance of a task is altered. For example, a xe2x80x9cTEMPLATExe2x80x9d modifier according to an embodiment of the present invention permits portions of resources to be reused, both within a resource and within other resources that have scope to the referenced resource (i.e., that are authorized according to the scoping hierarchy to utilize the resource). An xe2x80x9cALIASxe2x80x9d modifier according to an embodiment of the present invention allows a resource definition to be an alias of another resource definition that is in scope. An xe2x80x9cINHERIT-FROMxe2x80x9d modifier according to another embodiment of the present invention allows a resource definition to inherit from another resource definition that is in scope.
Resource searching according to the present invention may reduce duplication of resources utilized by multiple products. Accordingly, cost savings may be realized because of the reduced amount of code associated with multiple application programs.